#!/usr/bin/env python
# -*- coding:utf-8 -*-

# https://www.cnblogs.com/Kobe10/p/5712233.html
# 事件Events 和 Bindings
import tkinter
import tkinter.messagebox
'''
事件的分类
1.enentformats：
    <Button-1>点击左键
    <Button-2>点击右键
    <B1-Motion>左键移动
    <ButtonRelease-1>左键释放
    <Double-Button-1>双击左键
    <Enter>进入
    <Leave>离开
    <FocusIn>
    <FocusOut>
    <Return>
    <Key>
2.event attributes：widget,x,y,x_root,y_root,keycode(),num(),width,height,type
3.protocol

实现事件方式
    command             按钮级别
    bind（绑定）         按钮级别
    protacl（协议监听）  系统级别
'''
def main():
    root = tkinter.Tk()

    # def button1Click():  #回调函数
    #     print('button clicked')
    # button=Button(text='hello ',command=button1Click)#调用一个函数     command 回调
    # button.pack()
    # button.mainloop()

    def callback(event):
        frame.focus_set()  # 点击前得到一个焦点
        print('clicked at:', event.x, event.y)  # 打印出这个焦点的坐标

    def key(event):
        print('pressed', repr(event.char))  # 把字符打印

    def closeWindow():
        if tkinter.messagebox.askokcancel('Quit', 'do you want to exit'):
            root.destroy()

    frame = tkinter.Frame(root, width=100, height=100)  # Frame相当于一个容器
    frame.bind('<Button-1>', callback)  # 绑定函数   左键点击
    frame.bind('<Key>', key)
    frame.pack()

    root.protocol('WM_DELETE_WINDOW', closeWindow)

    root.mainloop()


if __name__ == "__main__":
    main()
